package com.qf.iostream;

import java.io.File;
import java.io.FilenameFilter;

public class FileTest {
	
	public static void main(String[] args) {
		
		//创建一个文件对象，输入文件路径
		File f1 = new File("D:\\Workspace\\Practice\\src\\file1");
		
		File f2 = new File("D:\\Workspace\\Practice\\src");
		
		File f3 = new File("E:\\Desktop\\工具");
		
		File f4 = new File("G:\\武城院\\其他\\Others");
		
		//是否是文件
		boolean b1 = f1.isFile();
		
		//是否是文件夹
		boolean b2 = f2.isDirectory();
		
		//是否存在
		boolean b3 = f3.exists();
		
		//文件是否隐藏
		boolean b4 = f1.isHidden();
		
		//返回文件名称
		String fileName = f1.getName();
		
		//返回文件路径
		String filePath = f1.getPath();
		
		//返回文件绝对路径
		String absFilePath = f1.getAbsolutePath();
		
		//返回当前文件夹下所有文件名
		String[] fileAllNames = f3.list();
		
		//获取文件的字节长度
		long fileLength = f1.length();
		
		//获取文件最后修改的时间（时间戳）
		long filelastModifyDate = f1.lastModified();
		
		//返回当前文件夹下所有文件
		File[] allFile = f3.listFiles();
		
		//返回f4当前文件夹下所有文件
		File[] allFile4 = f4.listFiles();
		
		String[] fileAllNames4 = f4.list();
		//删除f1文件
//		boolean fileDelete = f1.delete();
		
	
		
		System.out.println("文件名称：" + fileName );
		
		System.out.println("文件路径：" + filePath );
		
		System.out.println("文件绝对路径：" + absFilePath );
		
		System.out.println("文件的字节长度为：" + fileLength);
		
		System.out.println("文件最后修改时间：" + filelastModifyDate);
		
//		System.out.println("删除文件：" + fileDelete);
		
		for (String s : fileAllNames) {
			System.out.println("当前文件下文件有：" + s );
		}
		
		
		for (File file : allFile) {
			System.out.println("文件为：" + file);
		}
		
		
		//调用过滤后的方法,参数都为数组
		//FilterTxt(allFile4,fileAllNames4);
		
		
		//这个函数太乱了，我重新在FileTest02中重新写一个	
		for (int i = 0; i < fileAllNames4.length; i++) {
			System.out.println(FilterTxt(allFile4[i],fileAllNames4[i]));
			System.out.println("数据传输中...");
		}
		
		
		System.out.println(b1);
		
		System.out.println(b2);
		
		System.out.println(b3);
		
		JudgeFileLegal(f3);
		
		
		
		
	}
	
	//判断文件读取结果
	public static void JudgeFileLegal(File f) {
		
		if(f.isFile() && f.exists()) {
			System.out.println("是文件！");
			//设置为可读文件
			f.setReadable(true);
			//设置为可写文件
			f.setWritable(true);
			
		}else if(f.isDirectory() && f.exists()){
			System.out.println("是文件夹！");
			f.setReadable(true);
		}else {
			
			System.out.println("文件或目录不存在！");
			
		}
		
	}
	
	//过滤器：过滤后缀为txt的文件
	//不就是Linux里的管道|加grep配合使用吗？
	public static FilenameFilter FilterTxt(File dir,String name) {
		//因为是接口，所以没办法实例化创建一个对象，只能使用匿名内部类实现接口实例化
		FilenameFilter filenameFilter = new FilenameFilter() {
			//重写FilenameFilter接口的方法
			@Override
			public boolean accept(File dir, String name) {
				// TODO Auto-generated method stub
				if(name.endsWith(".txt")) {
					
					return true;
				}
				
				
				
				return false;
			}
			
			
		};
		return filenameFilter;
//		String[] fileNames=dir.list(filenameFilter);
//		
//		for (int i = 0; i < fileNames.length; i++) {
//			
//			System.out.println("过滤后文件名："+fileNames[i]);
//			
//		}
		
		
		
		
	}
	
	
	
	

}
